package com.coco.goods.mapper;
import com.coco.goods.vo.GoodsSearchVo;
import com.coco.goods.pojo.TbGoods;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * @Author: guofeng
 * @Date: 2021/07/14/20:46
 * @Description:
 */

public interface GoodsMapper {

    /**
     * 查新所有
     * @return
     */
    List<TbGoods> findAll();

    /**
     * 售卖列表
     * @param goodsSearchVo
     * @return
     */
    List<TbGoods> saleList(@Param("goodsSearchVo") GoodsSearchVo goodsSearchVo);

    /**
     * 加入回收站
     * @param id
     * @return
     */
    Boolean addRecycle(String id);

    /**
     * 查询单条
     * @param id
     * @return
     */
    TbGoods findOne(String id);

    /**
     * 添加商品
     * @param goods
     */
    void insert(TbGoods goods);

    /**
     * 根据主键修改
     * @param goods
     */
    void updateByPrimaryKey(@Param("goods") TbGoods goods);

    /**
     * 根据主键删除
     * @param id
     */
    void deleteByPrimaryKey(String id);

    /**
     * 根据主键查询
     * @param id
     * @return
     */
    TbGoods selectByPrimaryKey(Long id);

    /**
     * 按照条件查询
     * @param goods
     * @return
     */
    List<TbGoods> selectByExample(@Param("goods") TbGoods goods);

    /**
     * 查询售罄商品
     * @param goodsSearchVo
     * @return
     */
    List<TbGoods> findSelloutGoods(GoodsSearchVo goodsSearchVo);

    /**
     * 查询回收的商品
     * @param goodsSearchVo
     * @return
     */
    List<TbGoods> findRecycleGoods(GoodsSearchVo goodsSearchVo);

    /**
     * 商品上下架
     * @param id
     * @param status
     * @return
     */
    boolean putAway(@Param("id") String id,
                    @Param("status") Integer status);

    /**
     * 恢复商品
     * @param id
     */
    void recoverRecycleGoods(String id);

    /**
     * 删除回收站的商品
     * @param id
     */
    void deleteRecycleGoods(String id);

    /**
     * 仓库中的商品列表
     * @param goodsSearchVo
     * @return
     */
    List<TbGoods> warehouseList(@Param("goodsSearchVo") GoodsSearchVo goodsSearchVo);

    /**
     * 查询单条
     * @param goodsId
     * @return
     */
    TbGoods findById(Long goodsId);



}
